package com.kaifamiao.demo.d0803;

import java.util.Arrays;

/**
 * 禁止使用 Integer 的 API
 */
public class NumberFormatter {

    private char[] chs = {'0', '1', '2', '3', '4', '5', '6', '7',
            '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    /**
     * 转 16 进制
     * @param num
     * @return
     */
    public String toHex(int num){
        return toStringWithBase(num, 16);
    }


    /**
     * 转 8 进制
     * @param num
     * @return
     */
    public String toOctal(int num){
        return toStringWithBase(num, 8);
    }

    /**
     * 转 2 进制
     * @param num
     * @return
     */
    public String toBinary(int num){
        return toStringWithBase(num, 2);
    }

    private String toStringWithBase(int num, int base){
        if (num >= 0){
            if (base >= 0 && base <= 16){
                int count = 0;
                char[] result = new char[32];

                //
                while(num / base != 0){
                    result[count] = chs[num % base];
                    count ++;
                    num /= base;
                }
                // 最后一位
                result[count] = chs[num];

                StringBuilder str = new StringBuilder();
                for (int i = count; i >= 0; i --){
                    str.append(result[i]);
                }
                return str.toString();
            }
        }
        return null;
    }

    /**
     * 2 进制转 10 进制
     * @param str
     * @return
     */
    public int binaryToInt(String str){

        return 0;
    }

}
